package com.xijia.xj.config.init;


import com.xijia.xj.config.SpringUtils;
import com.xijia.xj.observer.ObServer;
import com.xijia.xj.observer.subject.XjSubject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.Map;


/**
 * 项目启动后需要 执行的一些方法 -->  注册观察者, 当我们的SpringBoot启动成功的时候，注册我们的SMSObServer
 * @author wangsong
 * @mail 1720696548@qq.com
 * @date 2020/9/2 0002 21:27
 * @version 1.0.0
 */
@Component
public class InitService implements ApplicationRunner {


    @Autowired
    private XjSubject xjSubject;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        /**
         * 自动注册我们观察者
         * 1.使用Spring获取该ObServer下有那些bean对象
         * 2.直接注添加到集合中
         */
        //根据接口类型返回相应的所有bean
        Map<String, ObServer> map = SpringUtils.getApplicationContext().getBeansOfType(ObServer.class);
        for (String key : map.keySet()) {
            ObServer obServer = map.get(key);
            xjSubject.addObServer(obServer);
        }
    }
}
